﻿using System;
using System.Runtime.InteropServices;
using UnityEngine;

[Serializable, StructLayout(LayoutKind.Sequential)]
public struct SerializableVector2
{
    public float x;
    public float y;
    public SerializableVector2(float X, float Y)
    {
        this.x = X;
        this.y = Y;
    }

    public static implicit operator Vector2(SerializableVector2 v)
    {
        return new Vector2(v.x, v.y);
    }

    public static implicit operator Vector3(SerializableVector2 v)
    {
        return new Vector3(v.x, v.y);
    }

    public static implicit operator SerializableVector2(Vector2 v)
    {
        return new SerializableVector2(v.x, v.y);
    }

    public static SerializableVector2 operator *(SerializableVector2 left, float right)
    {
        return new SerializableVector2(left.x * right, left.y * right);
    }

    public static SerializableVector2 operator +(SerializableVector2 left, SerializableVector2 right)
    {
        return new SerializableVector2(left.x * right.x, left.y * right.y);
    }

    public static SerializableVector2 operator +(SerializableVector2 left, Vector2 right)
    {
        return new SerializableVector2(left.x * right.x, left.y * right.y);
    }

    public static SerializableVector2 operator /(SerializableVector2 left, float right)
    {
        return new SerializableVector2(left.x / right, left.y / right);
    }
}

